Skip to content

Conversation

Hiryus
Copy link

@Hiryus Hiryus commented Jun 13, 2019

This PR adds a random token to all modification requests to prevent CSRF attacks (see https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) for a complete description of CSRF).

I was not able to run all tests though (I don't have any active directory handy especially).

kakwa and others added 30 commits February 7, 2018 19:52
- Switch from base64 to URL encoding for the passing the URL, using the built-in Mako filtering
- Apply HTML filtering to Mako output by default
- Disable HTML filtering for nested templates in adduser, modify, and selfmodify
Protect against XSS vulnerabilities in URL redirection
- Use markupsafe to format escaped HTML fragments
- Correct the formatting problems introduced with the XSS fixes
Escape form values with markupsafe
The templates were html escaping the generated js code for the
autofill and the role management. This was breaking these features.
It's okay to not escape these as they are coming from a trusted source
(configuration file).

Also make the templates python3 compatible (not need to import Set in
python 3)
Sets are not available in mako templates when using python3.
Reverting to using lists with 'if not in' checks to avoid duplication.
* changes in urllib imports since quote_plus in urllib with python 2 and
in urllib.parse in python 3
* changes in imports for Sets since set is a native type in python 3 and
doesn't requires an import
* fix in __import__, '-1' level for module path discovery is not supported
anymore, switching to 0 (absolute import only).
* switch from script to entry_points in setup.py
* move the cli script in ldapcherry (to be used as a module)
* put the __main__ code in a dedicated function constituting the entry
point
* add a few python3 environments in travis file
kakwa and others added 26 commits February 9, 2019 20:24
Now the escaping is done by in the templates.
We need to remove the previous escaping done by hand in the code.
Otherwise, we end-up with double escaping and funky displaying of
fields.
The id of the user is passed through the querystring in this page.
But the id was not properly escaped to be included as a querystring
parameter leading to weird issues like.
Debug mode can lead to log sensitive data (like password changes).
Having -D to log exclusively to stderr is a safer option.
previously, the default logger was passed, this logger was using the
default configuration and log level, not honoring log level in
particular.
As a consequence, it was impossible to get debug logs from the backend.
This is now working as expected.
* improve documentation for key: True flag in attributes.yml
* improve documentation for the ldap filters and their templating
* improve comment in the .ini file
pre-cleanup to avoid contamination if other tests fail
Change the email regular expression to fix a few validation issues
Add install command to setup in README
@coveralls
Copy link

Coverage Status

Coverage decreased (-1.6%) to 79.154% when pulling bc049ee on Hiryus:csrf-protection into 856157a on kakwa:master.

@Hiryus Hiryus changed the title WIP: add CSRF protection to all modification requests Add CSRF protection to all modification requests Jun 13, 2019
@Hiryus
Copy link
Author

Hiryus commented Jun 13, 2019

The library secret was added in python 3, but there is a back-port named python2-secrets if needed. Not sure how to use it only when using python 2 though...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants